package util

const ColumnSettingLevelSelf = "_"
const ColumnSettingMultipleSeparator = " "

var RpcEntityNames = struct { // rpc entities
	BlogGeneralSetting   string
	BlogLayoutMenu       string
	BlogLayoutMenuItem   string
	BlogAuthor           string
	BlogBook             string
	BlogBookDetail       string
	BlogBookMeta         string
	BlogBookRelation     string
	BlogContentNode      string
	BlogMedia            string
	BlogPage             string
	BlogPageDetail       string
	BlogPageMeta         string
	BlogPost             string
	BlogPostDetail       string
	BlogPostMeta         string
	BlogTerm             string
	BlogTermMeta         string
	BlogCategory         string
	BlogTag              string
	BlogSection          string
	ForumCommentReaction string
	ForumComment         string
	ForumForum           string
	ForumFriendship      string
	ForumMediaItem       string
	ForumPollOption      string
	ForumPollVote        string
	ForumPoll            string
	ForumPost            string
	ForumReaction        string
	ForumReport          string
	ForumTopic           string
	ForumUser            string
}{
	BlogGeneralSetting:   "blogGeneralSetting",
	BlogLayoutMenu:       "blogLayoutMenu",
	BlogLayoutMenuItem:   "blogLayoutMenuItem",
	BlogAuthor:           "blogAuthor",
	BlogBook:             "blogBook",
	BlogBookDetail:       "blogBookDetail",
	BlogBookMeta:         "blogBookMeta",
	BlogBookRelation:     "blogBookRelation",
	BlogContentNode:      "blogContentNode",
	BlogMedia:            "blogMedia",
	BlogPage:             "blogPage",
	BlogPageDetail:       "blogPageDetail",
	BlogPageMeta:         "blogPageMeta",
	BlogPost:             "blogPost",
	BlogPostDetail:       "blogPostDetail",
	BlogPostMeta:         "blogPostMeta",
	BlogTerm:             "blogTerm",
	BlogTermMeta:         "blogTermMeta",
	BlogCategory:         "blogCategory",
	BlogTag:              "blogTag",
	BlogSection:          "blogSection",
	ForumCommentReaction: "forumCommentReaction",
	ForumComment:         "forumComment",
	ForumForum:           "forumForum",
	ForumFriendship:      "forumFriendship",
	ForumMediaItem:       "forumMediaItem",
	ForumPollOption:      "forumPollOption",
	ForumPollVote:        "forumPollVote",
	ForumPoll:            "forumPoll",
	ForumPost:            "forumPost",
	ForumReaction:        "forumReaction",
	ForumReport:          "forumReport",
	ForumTopic:           "forumTopic",
	ForumUser:            "forumUser",
}

var DefaultLevels = struct {
	EdgesNode string
	Nodes     string
	Node      string
}{
	EdgesNode: "edges.node",
	Nodes: "nodes",
	Node: "node",
}

var ForumPayloadPreloadLevels = struct {
	ForumForum string
	ForumTopic string
	ForumPost string
	ForumComment string
	ForumUser string
	ForumUserFriendship string
	ForumLike string
	ForumCommentLike string
	ForumImage string
}{
	ForumForum: "forum",
	ForumTopic: "topic",
	ForumPost: "post",
	ForumComment: "comment",
	ForumUser: "user",
	ForumUserFriendship: "friendship",
	ForumLike: "like",
	ForumCommentLike: "commentLike",
	ForumImage: "image",
}

type ColumnSetting struct {
	Name          string /// rpc column name
	RpcEntityName string /// rpc entity name
	IDAvailable   bool // ID is available without preloading
	Level         string
	Extra         string
}

var RpcEntityPreloadMap = map[string]map[string]*ColumnSetting{
	RpcEntityNames.BlogGeneralSetting: {
		"dateFormat": &ColumnSetting{
			Name: "dateFormat",
		},
		"description": &ColumnSetting{
			Name: "description",
		},
		"email": &ColumnSetting{
			Name: "email",
		},
		"language": &ColumnSetting{
			Name: "language",
		},
		"startOfWeek": &ColumnSetting{
			Name: "startOfWeek",
		},
		"timeFormat": &ColumnSetting{
			Name: "timeFormat",
		},
		"timezone": &ColumnSetting{
			Name: "timezone",
		},
		"title": &ColumnSetting{
			Name: "title",
		},
		"url": &ColumnSetting{
			Name: "url",
		},
	},
	RpcEntityNames.BlogLayoutMenu: {
		"count": &ColumnSetting{
			Name: "Count",
		},
		"databaseId": &ColumnSetting{
			Name: "Id",
		},
		"id": &ColumnSetting{
			Name: "Id",
		},
		"isRestricted": &ColumnSetting{
			Name: "IsRestricted",
		},
		"name": &ColumnSetting{
			// Name: "Name",
			Name: "Slug",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"menuItems": &ColumnSetting{
			Name:          "menuItems",
			RpcEntityName: RpcEntityNames.BlogLayoutMenuItem,
			IDAvailable:   false,
			Level:         DefaultLevels.Nodes,
		},
	},
	RpcEntityNames.BlogLayoutMenuItem: {
		"databaseId": &ColumnSetting{
			Name: "Id",
		},
		"description": &ColumnSetting{
			Name: "Description",
		},
		"id": &ColumnSetting{
			Name: "Id",
		},
		"isRestricted": &ColumnSetting{
			Name: "IsRestricted",
		},
		"label": &ColumnSetting{
			Name: "Label",
		},
		"linkRelationship": &ColumnSetting{
			Name: "LinkRelationship",
		},
		"order": &ColumnSetting{
			Name: "Order",
		},
		"parentDatabaseId": &ColumnSetting{
			Name: "ParentId",
		},
		"parentId": &ColumnSetting{
			Name: "ParentId",
		},
		"path": &ColumnSetting{
			Name: "Path",
		},
		"target": &ColumnSetting{
			Name: "Target",
		},
		"title": &ColumnSetting{
			Name: "Title",
		},
		"url": &ColumnSetting{
			Name: "Url",
		},
		"childItems": &ColumnSetting{
			Name:          "childItems",
			RpcEntityName: RpcEntityNames.BlogLayoutMenuItem,
			IDAvailable:   true,
			Level:         DefaultLevels.Nodes,
		},
	},
	RpcEntityNames.BlogTerm: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"name": &ColumnSetting{
			Name: "Name",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"uri": &ColumnSetting{
			Name: "Slug",
		},
	},
	RpcEntityNames.BlogMedia: {
		"altText": &ColumnSetting{
			Name: "altText",
		},
		"sourceUrl": &ColumnSetting{
			Name: "sourceUrl",
		},
		"mediaDetails": &ColumnSetting{
			Name: "mediaDetails",
		},
		"url": &ColumnSetting{
			Name: "url",
		},
	},
	RpcEntityNames.BlogAuthor: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"name": &ColumnSetting{
			Name: "Name",
		},
		"uri": &ColumnSetting{
			Name: "Uri",
		},
		"avatar": &ColumnSetting{
			Name:          "avatar",
			RpcEntityName: RpcEntityNames.BlogMedia,
			IDAvailable:   false,
			Level:         ColumnSettingLevelSelf,
		},
	},
	RpcEntityNames.BlogPage: {
		"authorDatabaseId": &ColumnSetting{
			Name: "AuthorId",
		},
		"authorId": &ColumnSetting{
			Name: "AuthorId",
		},
		"authorName": &ColumnSetting{
			Name: "AuthorId",
		},
		"commentCount": &ColumnSetting{
			Name: "CommentCount",
		},
		"commentStatus": &ColumnSetting{
			Name: "CommentStatus",
		},
		"databaseId": &ColumnSetting{
			Name: "Id",
		},
		"date": &ColumnSetting{
			Name: "Date",
		},
		"dateGmt": &ColumnSetting{
			Name: "DateGmt",
		},
		"desiredSlug": &ColumnSetting{
			Name: "Slug",
		},
		"guid": &ColumnSetting{
			Name: "Uri",
		},
		"id": &ColumnSetting{
			Name: "Id",
		},
		"link": &ColumnSetting{
			Name: "Link",
		},
		"menuOrder": &ColumnSetting{
			Name: "SortOrder",
		},
		"modified": &ColumnSetting{
			Name: "Modified",
		},
		"modifiedGmt": &ColumnSetting{
			Name: "ModifiedGmt",
		},
		"parentDatabaseId": &ColumnSetting{
			Name: "ParentId",
		},
		"parentId": &ColumnSetting{
			Name: "ParentId",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"status": &ColumnSetting{
			Name: "Status",
		},
		"title": &ColumnSetting{
			Name: "Title",
		},
		"uri": &ColumnSetting{
			Name: "Uri",
		},
		"author": &ColumnSetting{
			Name: "AuthorId",
		},
		"categories": &ColumnSetting{
			Name:          "categories",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
		"content": &ColumnSetting{
			Name:          "content",
			RpcEntityName: RpcEntityNames.BlogPageDetail,
			IDAvailable:   false,
			Level:         ColumnSettingLevelSelf,
		},
		"featuredImage": &ColumnSetting{
			Name:          "media",
			RpcEntityName: RpcEntityNames.BlogMedia,
			IDAvailable:   false,
			Level:         DefaultLevels.Node,
		},
		"seo": &ColumnSetting{
			Name:          "meta",
			RpcEntityName: RpcEntityNames.BlogPageMeta,
			IDAvailable:   false,
		},
		"tags": &ColumnSetting{
			Name:          "tags",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
	},
	RpcEntityNames.BlogPageDetail: {
		"content": &ColumnSetting{
			Name: "ContentHtml",
		},
	},
	RpcEntityNames.BlogPageMeta: {
		"fullHead": &ColumnSetting{
			Name: "fullHead",
		},
		"title": &ColumnSetting{
			Name: "title",
		},
		"metaDesc": &ColumnSetting{
			Name: "metaDesc",
		},
	},
	RpcEntityNames.BlogPost: {
		"authorDatabaseId": &ColumnSetting{
			Name: "AuthorId",
		},
		"authorId": &ColumnSetting{
			Name: "AuthorId",
		},
		"commentCount": &ColumnSetting{
			Name: "CommentCount",
		},
		"commentStatus": &ColumnSetting{
			Name: "CommentStatus",
		},
		"databaseId": &ColumnSetting{
			Name: "Id",
		},
		"date": &ColumnSetting{
			Name: "Date",
		},
		"dateGmt": &ColumnSetting{
			Name: "DateGmt",
		},
		"desiredSlug": &ColumnSetting{
			Name: "Slug",
		},
		"guid": &ColumnSetting{
			Name: "Uri",
		},
		"id": &ColumnSetting{
			Name: "Id",
		},
		"link": &ColumnSetting{
			Name: "Link",
		},
		"menuOrder": &ColumnSetting{
			Name: "SortOrder",
		},
		"modified": &ColumnSetting{
			Name: "Modified",
		},
		"modifiedGmt": &ColumnSetting{
			Name: "ModifiedGmt",
		},
		"parentDatabaseId": &ColumnSetting{
			Name: "ParentId",
		},
		"parentId": &ColumnSetting{
			Name: "ParentId",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"status": &ColumnSetting{
			Name: "Status",
		},
		"title": &ColumnSetting{
			Name: "Title",
		},
		"uri": &ColumnSetting{
			Name: "Slug",
			Extra: "Uri",
		},
		"authorName": &ColumnSetting{
			Name: "AuthorId",
		},
		"categoryName": &ColumnSetting{
			Name:          "Slug",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
		},
		"author": &ColumnSetting{
			Name: "AuthorId",
		},
		"categories": &ColumnSetting{
			Name:          "categories",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
		"content": &ColumnSetting{
			Name:          "content",
			RpcEntityName: RpcEntityNames.BlogPostDetail,
			IDAvailable:   false,
			Level:         ColumnSettingLevelSelf,
		},
		"featuredImage": &ColumnSetting{
			Name:          "media",
			RpcEntityName: RpcEntityNames.BlogMedia,
			IDAvailable:   false,
			Level:         DefaultLevels.Node,
		},
		"seo": &ColumnSetting{
			Name:          "meta",
			RpcEntityName: RpcEntityNames.BlogPostMeta,
			IDAvailable:   false,
		},
		"tags": &ColumnSetting{
			Name:          "tags",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
	},
	RpcEntityNames.BlogPostDetail: {
		"content": &ColumnSetting{
			Name: "ContentHtml",
		},
	},
	RpcEntityNames.BlogPostMeta: {
		"fullHead": &ColumnSetting{
			Name: "fullHead",
		},
		"title": &ColumnSetting{
			Name: "title",
		},
		"metaDesc": &ColumnSetting{
			Name: "metaDesc",
		},
	},
	RpcEntityNames.BlogBook: {
		"commentCount": &ColumnSetting{
			Name: "CommentCount",
		},
		"commentStatus": &ColumnSetting{
			Name: "CommentStatus",
		},
		"databaseId": &ColumnSetting{
			Name: "Id",
		},
		"date": &ColumnSetting{
			Name: "Date",
		},
		"dateGmt": &ColumnSetting{
			Name: "DateGmt",
		},
		"desiredSlug": &ColumnSetting{
			Name: "Slug",
		},
		"guid": &ColumnSetting{
			Name: "Uri",
		},
		"id": &ColumnSetting{
			Name: "Id",
		},
		"link": &ColumnSetting{
			Name: "Link",
		},
		"modified": &ColumnSetting{
			Name: "Modified",
		},
		"modifiedGmt": &ColumnSetting{
			Name: "ModifiedGmt",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"status": &ColumnSetting{
			Name: "Status",
		},
		"title": &ColumnSetting{
			Name: "Title",
		},
		"uri": &ColumnSetting{
			Name: "Uri",
		},
		"bookFields": &ColumnSetting{
			Name:          "meta",
			RpcEntityName: RpcEntityNames.BlogBookMeta,
			IDAvailable:   false,
		},
		"categories": &ColumnSetting{
			Name:          "categories",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
		"content": &ColumnSetting{
			Name:          "content",
			RpcEntityName: RpcEntityNames.BlogBookDetail,
			IDAvailable:   false,
			Level:         ColumnSettingLevelSelf,
		},
		"featuredImage": &ColumnSetting{
			Name:          "media",
			RpcEntityName: RpcEntityNames.BlogMedia,
			IDAvailable:   false,
			Level:         DefaultLevels.Node,
		},
		"relations": &ColumnSetting{
			Name:          "relations",
			RpcEntityName: RpcEntityNames.BlogBookRelation,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
		"sections": &ColumnSetting{
			Name:          "sections",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
		"seo": &ColumnSetting{
			Name:          "meta",
			RpcEntityName: RpcEntityNames.BlogBookMeta,
			IDAvailable:   false,
		},
		"tags": &ColumnSetting{
			Name:          "tags",
			RpcEntityName: RpcEntityNames.BlogTerm,
			IDAvailable:   false,
			Level:         DefaultLevels.EdgesNode,
		},
	},
	RpcEntityNames.BlogBookDetail: {
		"content": &ColumnSetting{
			Name: "ContentHtml",
		},
	},
	RpcEntityNames.BlogBookMeta: {
		"fullHead": &ColumnSetting{
			Name: "fullHead",
		},
		"title": &ColumnSetting{
			Name: "title",
		},
		"metaDesc": &ColumnSetting{
			Name: "metaDesc",
		},
		"year": &ColumnSetting{
			Name: "year",
		},
	},
	RpcEntityNames.BlogBookRelation: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"title": &ColumnSetting{
			Name: "Title",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"uri": &ColumnSetting{
			Name: "Uri",
		},
		"link": &ColumnSetting{
			Name: "Link",
		},
	},
	RpcEntityNames.BlogContentNode: {
		"contentTypeName": &ColumnSetting{
			Name: "contentTypeName",
		},
		"databaseId": &ColumnSetting{
			Name: "Id",
		},
		"date": &ColumnSetting{
			Name: "date",
		},
		"dateGmt": &ColumnSetting{
			Name: "dateGmt",
		},
		"desiredSlug": &ColumnSetting{
			Name: "desiredSlug",
		},
		"enclosure": &ColumnSetting{
			Name: "enclosure",
		},
		"guid": &ColumnSetting{
			Name: "guid",
		},
		"id": &ColumnSetting{
			Name: "Id",
		},
		"isPreview": &ColumnSetting{
			Name: "isPreview",
		},
		"isRestricted": &ColumnSetting{
			Name: "isRestricted",
		},
		"link": &ColumnSetting{
			Name: "Link",
		},
		"modified": &ColumnSetting{
			Name: "modified",
		},
		"modifiedGmt": &ColumnSetting{
			Name: "modifiedGmt",
		},
		"previewRevisionDatabaseId": &ColumnSetting{
			Name: "previewRevisionDatabaseId",
		},
		"previewRevisionId": &ColumnSetting{
			Name: "previewRevisionId",
		},
		"slug": &ColumnSetting{
			Name: "slug",
		},
		"status": &ColumnSetting{
			Name: "status",
		},
		"uri": &ColumnSetting{
			Name: "Uri",
		},
	},
	RpcEntityNames.ForumForum: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"name": &ColumnSetting{
			Name: "Name",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"parentId": &ColumnSetting{
			Name: "ParentId",
		},
		"desc": &ColumnSetting{
			Name: "DescHtml",
		},
		"status": &ColumnSetting{
			Name: "Status",
		},
		"sortOrder": &ColumnSetting{
			Name: "SortOrder",
		},
		"createdAt": &ColumnSetting{
			Name: "CreatedAt",
		},
		"updatedAt": &ColumnSetting{
			Name: "UpdatedAt",
		},
		"polls": &ColumnSetting{
			Name:          "polls",
			RpcEntityName: RpcEntityNames.ForumPoll,
			IDAvailable:   false,
		},
		"topics": &ColumnSetting{
			Name:          "topics",
			RpcEntityName: RpcEntityNames.ForumTopic,
			IDAvailable:   false,
		},
	},
	RpcEntityNames.ForumTopic: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"title": &ColumnSetting{
			Name: "Title",
		},
		"authorId": &ColumnSetting{
			Name: "AuthorId",
		},
		"slug": &ColumnSetting{
			Name: "Slug",
		},
		"status": &ColumnSetting{
			Name: "StatusText",
		},
		"sticky": &ColumnSetting{
			Name: "StickyText",
		},
		"postCount": &ColumnSetting{
			Name: "PostCount",
		},
		"viewCount": &ColumnSetting{
			Name: "ViewCount",
		},
		"createdAt": &ColumnSetting{
			Name: "CreatedAt",
		},
		"updatedAt": &ColumnSetting{
			Name: "UpdatedAt",
		},
		"forum": &ColumnSetting{
			Name:          "forum",
			RpcEntityName: RpcEntityNames.ForumForum,
			IDAvailable:   true,
		},
		"user": &ColumnSetting{
			Name:          "user",
			RpcEntityName: RpcEntityNames.ForumUser,
			IDAvailable:   true,
		},
		"posts": &ColumnSetting{
			Name:          "posts",
			RpcEntityName: RpcEntityNames.ForumPost,
			IDAvailable:   false,
		},
	},
	RpcEntityNames.ForumPost: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"authorId": &ColumnSetting{
			Name: "AuthorId",
		},
		"content": &ColumnSetting{
			Name: "ContentHtml",
		},
		"status": &ColumnSetting{
			Name: "StatusText",
		},
		"commentStatus": &ColumnSetting{
			Name: "CommentStatusText",
		},
		"commentCount": &ColumnSetting{
			Name: "CommentCount",
		},
		"createdAt": &ColumnSetting{
			Name: "CreatedAt",
		},
		"author": &ColumnSetting{
			Name:          "author",
			RpcEntityName: RpcEntityNames.ForumUser,
			IDAvailable:   true,
		},
		"topic": &ColumnSetting{
			Name:          "topic",
			RpcEntityName: RpcEntityNames.ForumTopic,
			IDAvailable:   true,
		},
		"images": &ColumnSetting{
			Name:          "images",
			RpcEntityName: RpcEntityNames.ForumMediaItem,
			IDAvailable:   false,
		},
		"comments": &ColumnSetting{
			Name:          "comments",
			RpcEntityName: RpcEntityNames.ForumComment,
			IDAvailable:   false,
		},
		"likes": &ColumnSetting{
			Name:          "likes",
			RpcEntityName: RpcEntityNames.ForumReaction,
			IDAvailable:   false,
		},
	},
	RpcEntityNames.ForumComment: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"content": &ColumnSetting{
			Name: "ContentHtml",
		},
		"commentType": &ColumnSetting{
			Name: "Type",
		},
		"commentStatus": &ColumnSetting{
			Name: "StatusText",
		},
		"sticky": &ColumnSetting{
			Name: "StickyText",
		},
		"date": &ColumnSetting{
			Name: "CreatedAt",
		},
		"likes": &ColumnSetting{
			Name:          "likes",
			RpcEntityName: RpcEntityNames.ForumCommentReaction,
			IDAvailable:   false,
		},
	},
	RpcEntityNames.ForumReaction: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"reactionType": &ColumnSetting{
			Name: "Type",
		},
		"date": &ColumnSetting{
			Name: "CreatedAt",
		},
		"topic": &ColumnSetting{
			Name:          "topic",
			RpcEntityName: RpcEntityNames.ForumTopic,
			IDAvailable:   true,
		},
		"post": &ColumnSetting{
			Name:          "post",
			RpcEntityName: RpcEntityNames.ForumPost,
			IDAvailable:   true,
		},
		"user": &ColumnSetting{
			Name:          "user",
			RpcEntityName: RpcEntityNames.ForumUser,
			IDAvailable:   true,
		},
	},
	RpcEntityNames.ForumUser: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"niceName": &ColumnSetting{
			Name: "NiceName",
		},
		"email": &ColumnSetting{
			Name: "Email",
		},
		"url": &ColumnSetting{
			Name: "Url",
		},
		"ip": &ColumnSetting{
			Name: "Ip",
		},
		"displayName": &ColumnSetting{
			Name: "DisplayName",
		},
		"registeredAt": &ColumnSetting{
			Name: "RegisteredAt",
		},
		"friendships": &ColumnSetting{
			Name:          "friendships",
			RpcEntityName: RpcEntityNames.ForumFriendship,
			IDAvailable:   false,
		},
		"comments": &ColumnSetting{
			Name:          "comments",
			RpcEntityName: RpcEntityNames.ForumComment,
			IDAvailable:   false,
		},
	},
	RpcEntityNames.ForumCommentReaction: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"reactionType": &ColumnSetting{
			Name: "ReactionType",
		},
		"date": &ColumnSetting{
			Name: "CreatedAt",
		},
		"user": &ColumnSetting{
			Name:          "user",
			RpcEntityName: RpcEntityNames.ForumUser,
			IDAvailable:   true,
		},
		"comment": &ColumnSetting{
			Name:          "comment",
			RpcEntityName: RpcEntityNames.ForumComment,
			IDAvailable:   true,
		},
	},
	RpcEntityNames.ForumMediaItem: {
		"id": &ColumnSetting{
			Name: "Id",
		},
		"originalUrl": &ColumnSetting{
			Name: "Uri",
		},
		"url": &ColumnSetting{
			Name: "Url",
		},
		"post": &ColumnSetting{
			Name:          "post",
			RpcEntityName: RpcEntityNames.ForumPost,
			IDAvailable:   true,
		},
	},
}
